/*
编写程序实现二叉树的如下操作：
1) 建立二叉链表
2) 二叉树的先序、中序、后序遍历
3) 求二叉树的叶子结点个数
4) 将二叉树中所有结点的左、右子树相互交换

输入：
　　扩展二叉树先序序列：ab#d##ce###。其中#代表空指针。

输出：
　　二叉树的凹入表示
　　二叉树的先序序列、中序序列、后序序列
　　二叉树叶子结点个数
　　左、右子树相互交换后的二叉树的凹入表示
　　左、右子树相互交换后的二叉树的先序序列、中序序列、后序序列。

说明：
　　在输出凹入表示的二叉树时，先输出根结点，然后依次输出左右子树，上下层结点之间相隔 3 个空格。
*/

/*
测试用例1:
输入：
ab#d##ce###↵
输出：
BiTree↵
a↵
    b↵
        d↵
    c↵
        e↵
pre_sequence  : abdce↵
in_sequence   : bdaec↵
post_sequence : dbeca↵
Number of leaf: 2↵
BiTree swapped↵
a↵
    c↵
        e↵
    b↵
        d↵
pre_sequence  : acebd↵
in_sequence   : ceadb↵
post_sequence : ecdba↵

测试用例1:
输入：
abd##e##cf##g##↵
输出：
BiTree↵
a↵
    b↵
        d↵
        e↵
    c↵
        f↵
        g↵
pre_sequence  : abdecfg↵
in_sequence   : dbeafcg↵
post_sequence : debfgca↵
Number of leaf: 4↵
BiTree swapped↵
a↵
    c↵
        g↵
        f↵
    b↵
        e↵
        d↵
pre_sequence  : acgfbed↵
in_sequence   : gcfaebd↵
post_sequence : gfcedba↵
*/